#ifndef __BSP_ADC_H
#define __BSP_ADC_H
#include "User_App.h"

#define ADC_OBJ_NUM (1)       // ADC对象的数量
#define ADC_OBJ_DATA_NUM (10) // 每个ADC对象存储的数据量

typedef enum
{
    a_DISABLE, // 失能
    a_ENABLE,  // 使能
} ADC_STATE;

typedef struct
{
    uint16_t a_Obj_Buff[ADC_OBJ_DATA_NUM]; // 用来存储ADC对象的数据
    uint16_t a_Obj_Value;                  // 这里表示均值
} ADC_OBJ_S;

typedef struct
{
    ADC_STATE a_STATE;                                            // 状态
    ADC_TypeDef *a_ADCx;                                          // 目标ADC,例如ADC1
    DMA_TypeDef *a_DMAx;                                          // 目标DMA,例如DMA1
    uint32_t a_DMA_Channel;                                       // 目标DMA通道,例如LL_DMA_CHANNEL_1
    uint8_t a_Obj_Num;                                            // ADC采集对象的数量
    volatile uint16_t a_All_Buff[ADC_OBJ_NUM * ADC_OBJ_DATA_NUM]; // 所有ADC对象采集的数据
    ADC_OBJ_S a_Obj_Struct[ADC_OBJ_NUM];                          // ADC对象结构体数组
} ADC_s;

extern ADC_s ADC_OBEY;

void bsp_Adc_Init(ADC_s *obj);
void Ti_BSP_ADC_event(void);
void Ti_BSP_ADC_DATA_event(void);

void bsp_Adc_Debug(void);

#endif
